package com.tbit.main.util;

import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件工具类
 *
 * @author Leon
 * 2019年1月23日 下午3:55:10
 */
@Slf4j
public class FileUtils {

    /**
     * 删除单个文件
     *
     * @param sPath 被删除文件的文件名
     * @return 单个文件删除成功返回true，否则返回false
     */
    public static boolean deleteFile(String sPath) {
        boolean flag = false;
        File file = new File(sPath);
        // 路径为文件且不为空则进行删除
        if (file.isFile() && file.exists()) {
            file.delete();
            flag = true;
        }
        return flag;
    }

    /**
     * 创建目录
     *
     * @param destDirName 目标目录名
     * @return 目录创建成功返回true，否则返回false
     */
    public static boolean createDir(String destDirName) {
        File dir = new File(destDirName);
        if (dir.exists()) {
            return false;
        }
        if (!destDirName.endsWith(File.separator)) {
            destDirName = destDirName + File.separator;
        }
        // 创建单个目录
        if (dir.mkdirs()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 创建文件
     *
     * @param fileName
     * @return
     */
    public static boolean createFile(String fileName) {
        try {
            File file = new File("D://a.txt");
            if (!file.exists()) {
                file.createNewFile();
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

    /**
     * 写txt文本
     *
     * @param content
     * @param path
     * @return
     */
    public static boolean writeTxtFile(String content, String path) {
        RandomAccessFile mm = null;
        boolean flag = false;
        FileOutputStream o = null;
        try {
            File file = new File(path);
            if (!file.exists()) {
                file.createNewFile();
            }
            o = new FileOutputStream(file);
            o.write(content.getBytes("GBK"));
            o.close();
            flag = true;
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        } finally {
            if (mm != null) {
                try {
                    mm.close();
                } catch (IOException e) {
                    log.error(e.getMessage(), e);
                }
            }
        }
        return flag;
    }

    public static List<String> readTxtFile(String filePath, String encoding) {
        List<String> res = new ArrayList();
        try {
            File file = new File(filePath);
            // 判断文件是否存在
            if (file.isFile() && file.exists()) {
                // 编码格式必须和文件的一致
                InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    res.add(lineTxt.split("\t")[0]);
                }
                read.close();
            } else {
                System.out.println("指定的文件不存在");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            log.error(e.getMessage(), e);
        }
        return res;
    }

    public static void main(String[] args) {
        writeTxtFile("aaaa\r\nddd\r\nccc", "D://a.txt");
    }

}
